package com.juma.cartridge.toker;

/**
 * token生成&消费控制器
 * @ClassName Toker
 * @Description
 * @Author zhuangguangyou
 * @Date 2019年10月29日 下午6:01:24
 * @Version 1.0
 *
 */
public interface TokenClient {

    
    /**
     * 生成token
     * @param timeoutInSec 生成的token最大有效时间(秒),当给定值<1时,表示永久有效
     * @return
     */
    Token produce(int timeoutInSec);
    
    /**
     * 生成token
     * @param name
     * @param timeoutInSec 生成的token最大有效时间(秒),当给定值<1时,表示永久有效
     * @return
     */
    Token produce(String name,int timeoutInSec);
    
    /**
     * 通过指定id生成token
     * @param name token标识名称
     * @param tokenId id
     * @param timeoutInSec 生成的token最大有效时间(秒),当给定值<1时,表示永久有效
     * @return
     */
    Token produce(String name,String tokenId,int timeoutInSec);
    
    /**
     * 消费token
     * @param tokenId
     * @return true-消费成功,false-token不存在或已过期
     */
    boolean consume(String tokenId);
    
    /**
     * 消费token
     * @param name token名
     * @param tokenId
     * @return
     */
    boolean consume(String name,String tokenId);
    
    /**
     * 检查token是否存在
     * @param tokenId
     * @return true-存在,false-不存在
     */
    boolean check(String tokenId);
    
    /**
     * 检查token是否存在
     * @param name token名
     * @param tokenId
     * @return
     */
    boolean check(String name,String tokenId);
    
}
